package cn.xutongxue.interview.service;

import cn.xutongxue.interview.common.ResponseResult;
import cn.xutongxue.interview.entity.Question;
import cn.xutongxue.interview.entity.dto.question.QuestionQueryDto;
import cn.xutongxue.interview.entity.dto.question.QuestionRemoveBatch;
import cn.xutongxue.interview.entity.vo.QuestionVo;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.Date;
import java.util.List;

/**
* @author Administrator
* @description 针对表【question(题目表)】的数据库操作Service
* @createDate 2024-09-11 16:43:43
*/
public interface QuestionService extends IService<Question> {

    /**
     * 分页查询题目Vo列表
     * @param queryDto 查询条件
     * @return 查询结果
     */
    ResponseResult<Page<QuestionVo>> listQuestionVoPage(QuestionQueryDto queryDto);

    /**
     * 查询5分钟内的所有题目信息（包含已删除）
     * @param fiveMinuteAgo 5分钟前的日期
     * @return 查询结果
     */
    List<Question> listQuestionWitheDelete(Date fiveMinuteAgo);

    /**
     * ES查询题目信息
     * @param queryDto 查询参数
     * @return 查询结果
     */
    Page<Question> searchQuestionFromEs(QuestionQueryDto queryDto);

    /**
     * 批量删除题目信息
     * @param questionIdList 待删除的题目ID列表
     */
    void deleteQuestionBatch(List<Long> questionIdList);

    /**
     * 分页查询题目信息
     * @param queryDto 查询参数
     * @return 查询结果
     */
    Page<Question> listQuestionByPage(QuestionQueryDto queryDto);

    /**
     * 构造查询参数Wrapper
     * @param queryDto 查询参数
     * @return wrapper
     */
    QueryWrapper<Question> getQueryWrapper(QuestionQueryDto queryDto);
}
